﻿using System;
using System.Data;
using System.Linq;
using System.Windows.Forms;
using SiGeCoPre.Presupuesto_BL;
using SiGeCoPre.Presupuesto_DTO;
using SiGeCoPre.Presupuesto_Factory;
using SiGeCoPre.Presupuesto_Util;
using SiGeCoPre.Presupuesto_ViewAlta;
using SiGeCoPre.Presupuesto_ViewBaja;
using SiGeCoPre.Presupuesto_ViewListado;
using SiGeCoPre.Presupuesto_ViewModificacion;
using System.Drawing;

namespace SiGeCoPre
{
    /// <summary>
    /// Pantalla principal de la aplicación
    /// </summary>
    public partial class frmPrincipal : Form
    {
        private static string usuario = "";

        frmLogin login = null;
        BLPresupuestos createPresupuestos = BLFactoryPresupuesto.createPresupuesto();
        BLPresupuestosClientes createPreCli = BLFactoryPresupuesto.createPresupuestoClientes();
        BLClientes createCliente = BLFactoryPresupuesto.createCliente();

        public frmPrincipal()
        {
            InitializeComponent();
        }

        private void frmPrincipal_Load(object sender, EventArgs e)
        {
            login = new frmLogin();
            login.FormClosed += new FormClosedEventHandler(login_FormClosed);
            login.ShowDialog();
        }

        private void login_FormClosed(object sender, FormClosedEventArgs e)
        {
            tslblUsuarioActivo.Text = login.usuarioConectado();
            usuario = tslblUsuarioActivo.Text;
            rdAnio.Checked = true;
        }

        /// <summary>
        /// Intercambia el usuario activo
        /// </summary>
        /// <returns>Devuelve el usuario que se encuentra activo en el sistema</returns>
        public static string pasarUsuario()
        {
            return usuario;
        }

        private void altaEmpleadosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmAltaEmpleado").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmAltaEmpleado altaEmpleado = new frmAltaEmpleado();
                altaEmpleado.StartPosition = FormStartPosition.CenterScreen;
                altaEmpleado.Show();
            }
        }

        private void bajaEmpleadosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmBajaEmpleado").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmBajaEmpleado bajaEmpleado = new frmBajaEmpleado();
                bajaEmpleado.StartPosition = FormStartPosition.CenterScreen;
                bajaEmpleado.Show();
            }
        }

        private void modificarEmpleadosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmModificarEmpleado").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmModificarEmpleado modificarEmpleado = new frmModificarEmpleado();
                modificarEmpleado.StartPosition = FormStartPosition.CenterScreen;
                modificarEmpleado.Show();
            }
        }

        private void listadoEmpleadosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmListadoEmpleado").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmListadoEmpleado listadoEmpleado = new frmListadoEmpleado();
                listadoEmpleado.StartPosition = FormStartPosition.CenterScreen;
                listadoEmpleado.Show();
            }
        }

        private void altaDeSectoresToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmAltaSector").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmAltaSector altaSector = new frmAltaSector();
                altaSector.StartPosition = FormStartPosition.CenterScreen;
                altaSector.Show();
            }
        }

        private void altaDeCiudadToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmAltaCiudad").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmAltaCiudad altaCiudad = new frmAltaCiudad();
                altaCiudad.StartPosition = FormStartPosition.CenterScreen;
                altaCiudad.Show();
            }
        }

        private void altaDeProvinciaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmAltaProvincia").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmAltaProvincia altaProvincia = new frmAltaProvincia();
                altaProvincia.StartPosition = FormStartPosition.CenterScreen;
                altaProvincia.Show();
            }
        }

        private void altaDePaísToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmAltaPais").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmAltaPais altaPais = new frmAltaPais();
                altaPais.StartPosition = FormStartPosition.CenterScreen;
                altaPais.Show();
            }
        }

        private void altaClientesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmAltaCliente").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmAltaCliente altaCliente = new frmAltaCliente();
                altaCliente.StartPosition = FormStartPosition.CenterScreen;
                altaCliente.Show();
            }
        }

        private void bajaClientesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmBajaCliente").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmBajaCliente bajaCliente = new frmBajaCliente();
                bajaCliente.StartPosition = FormStartPosition.CenterScreen;
                bajaCliente.Show();
            }
        }

        private void modificaciónClientesToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmModificarCliente").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmModificarCliente modificarCliente = new frmModificarCliente();
                modificarCliente.StartPosition = FormStartPosition.CenterScreen;
                modificarCliente.Show();
            }
        }

        private void listadoClientesToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmListadoCliente").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmListadoCliente listadoCliente = new frmListadoCliente();
                listadoCliente.StartPosition = FormStartPosition.CenterScreen;
                listadoCliente.Show();
            }
        }

        private void altaTareasToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmAltaMantenimiento").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmAltaMantenimiento altaMantenimiento = new frmAltaMantenimiento();
                altaMantenimiento.StartPosition = FormStartPosition.CenterScreen;
                altaMantenimiento.Show();
            }
        }

        private void modificacionTareasToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmModificarMantenimiento").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmModificarMantenimiento modificarMantenimiento = new frmModificarMantenimiento();
                modificarMantenimiento.StartPosition = FormStartPosition.CenterScreen;
                modificarMantenimiento.Show();
            }
        }

        private void listadoTareasToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmListadoTareas").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmListadoTareas listadoTareas = new frmListadoTareas();
                listadoTareas.StartPosition = FormStartPosition.CenterScreen;
                listadoTareas.Show();
            }
        }

        private void altaRepuestosToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmAltaRepuesto").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmAltaRepuesto altaRepuesto = new frmAltaRepuesto();
                altaRepuesto.StartPosition = FormStartPosition.CenterScreen;
                altaRepuesto.Show();
            }
        }

        private void modificaciónRepuestosToolStripMenuItem3_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmModificarRepuesto").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmModificarRepuesto modificarRepuesto = new frmModificarRepuesto();
                modificarRepuesto.StartPosition = FormStartPosition.CenterScreen;
                modificarRepuesto.Show();
            }
        }

        private void listadoRepuestosToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmListadoRepuesto").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmListadoRepuesto listadoRepuesto = new frmListadoRepuesto();
                listadoRepuesto.StartPosition = FormStartPosition.CenterScreen;
                listadoRepuesto.Show();
            }
        }

        private void deEquipoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmAltaPresupuestoEquipo").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmAltaPresupuestoEquipo altaPresupuestoEquipo = new frmAltaPresupuestoEquipo();
                altaPresupuestoEquipo.StartPosition = FormStartPosition.CenterScreen;
                altaPresupuestoEquipo.Show();
            }
        }

        private void deRepuestosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmAltaPresupuestoRepuesto").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmAltaPresupuestoRepuesto altaPresupuestoRepuesto = new frmAltaPresupuestoRepuesto();
                altaPresupuestoRepuesto.StartPosition = FormStartPosition.CenterScreen;
                altaPresupuestoRepuesto.Show();
            }
        }

        private void deMantenimientoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmAltaPresupuestoMantenimiento").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmAltaPresupuestoMantenimiento altaPresupuestoMantenimiento = new frmAltaPresupuestoMantenimiento();
                altaPresupuestoMantenimiento.StartPosition = FormStartPosition.CenterScreen;
                altaPresupuestoMantenimiento.Show();
            }
        }

        private void bajaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmBajaPresupuesto").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmBajaPresupuesto bajaPresupuesto = new frmBajaPresupuesto();
                bajaPresupuesto.StartPosition = FormStartPosition.CenterScreen;
                bajaPresupuesto.Show();
            }
        }

        private void listadoToolStripMenuItem3_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmListadoPresupuesto").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmListadoPresupuesto listadoPresupuesto = new frmListadoPresupuesto();
                listadoPresupuesto.StartPosition = FormStartPosition.CenterScreen;
                listadoPresupuesto.Show();
            }
        }

        private void deEquipoToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmModificarPresupuestoEquipo").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmModificarPresupuestoEquipo modificar = new frmModificarPresupuestoEquipo();
                modificar.StartPosition = FormStartPosition.CenterScreen;
                modificar.Show();
            }
        }

        private void deRepuestosToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmModificarPresupuestoRepuesto").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmModificarPresupuestoRepuesto modificar = new frmModificarPresupuestoRepuesto();
                modificar.StartPosition = FormStartPosition.CenterScreen;
                modificar.Show();
            }
        }

        private void deMantenimientoToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmModificarPresupuestoMantenimiento").SingleOrDefault<Form>();

            if (existe != null)
            {
                MessageBox.Show("El formulario ya se encuentra visible!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                frmModificarPresupuestoMantenimiento modificar = new frmModificarPresupuestoMantenimiento();
                modificar.StartPosition = FormStartPosition.CenterScreen;
                modificar.Show();
            }
        }

        private void rdAnio_CheckedChanged(object sender, EventArgs e)
        {
            if (rdAnio.Checked)
            {
                txtFiltro.Text = string.Empty;
                txtFiltro.Location = new System.Drawing.Point(258, 32);
            }
        }

        private void rdCodigo_CheckedChanged(object sender, EventArgs e)
        {
            if (rdCodigo.Checked)
            {
                txtFiltro.Text = string.Empty;
                txtFiltro.Location = new System.Drawing.Point(258, 62);
            }
        }

        private void rdCliente_CheckedChanged(object sender, EventArgs e)
        {
            if (rdCliente.Checked)
            {
                txtFiltro.Text = string.Empty;
                txtFiltro.Location = new System.Drawing.Point(258, 90);
            }
        }

        private void rdTipo_CheckedChanged(object sender, EventArgs e)
        {
            if (rdTipo.Checked)
            {
                txtFiltro.Text = string.Empty;
                txtFiltro.Location = new System.Drawing.Point(258, 118);
            }
        }

        private void txtFiltro_KeyPress(object sender, KeyPressEventArgs e)
        {
            try
            {
                if (e.KeyChar == Convert.ToChar(Keys.Enter))
                {
                    ImageList iconos = new ImageList();
                    string carpetaIconos = Application.StartupPath + @"\Iconos\";
                    iconos.Images.Add(new Icon(carpetaIconos + "folder.ico"));
                    iconos.Images.Add(new Icon(carpetaIconos + "pdf.ico"));
                    trvPresupuestos.ImageList = iconos;
                    trvPresupuestos.Nodes.Clear();

                    TreeNode filtro = trvPresupuestos.Nodes.Add(txtFiltro.Text);
                    filtro.ImageIndex = 0;
                    
                    if (rdAnio.Checked)
                    {
                        string cliente = "";
                        string codigo = "";
                        TreeNode cli = null;
                        TreeNode cod = null;
                        DataTable pre = createPreCli.getAllPresupuestoCliente();
                        if (null != pre)
                        {
                            int anioBusqueda = Convert.ToInt16(txtFiltro.Text);

                            foreach (DataRow dr in pre.Rows)
                            {
                                int anio = Convert.ToDateTime(dr["fecha"].ToString()).Date.Year;

                                if (anioBusqueda == anio)
                                {
                                    if (!cliente.Equals(dr["Nombre"].ToString()))
                                    {
                                        cliente = dr["Nombre"].ToString();
                                        cli = filtro.Nodes.Add(dr["Nombre"].ToString());
                                        cli.ImageIndex = 0;
                                        codigo = dr["codigo"].ToString();
                                        cod = cli.Nodes.Add(dr["codigo"].ToString());
                                        cod.ImageIndex = 1;
                                    }
                                    else
                                    {
                                        if (!codigo.Equals(dr["codigo"].ToString()))
                                        {
                                            cod = cli.Nodes.Add(dr["codigo"].ToString());
                                            cod.ImageIndex = 1;
                                            codigo = dr["codigo"].ToString();
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else if (rdCliente.Checked)
                    {
                        int anio = 0;
                        string codigo = "";
                        TreeNode ani = null;
                        TreeNode cod = null;
                        DataTable pre = createPreCli.getAllPresupuestoCliente();

                        if (null != pre)
                        {
                            string cliente = txtFiltro.Text;

                            foreach (DataRow dr in pre.Rows)
                            {
                                if (cliente.Equals(dr["Nombre"].ToString()))
                                {
                                    int anioPre = Convert.ToDateTime(dr["fecha"].ToString()).Date.Year;
                                    
                                    if (anio != anioPre)
                                    {
                                        ani = filtro.Nodes.Add(anioPre.ToString());
                                        ani.ImageIndex = 0;
                                        codigo = dr["codigo"].ToString();
                                        cod = ani.Nodes.Add(dr["codigo"].ToString());
                                        cod.ImageIndex = 1;
                                        anio = anioPre;
                                    }
                                    else
                                    {
                                        if (!codigo.Equals(dr["codigo"].ToString()))
                                        {
                                            cod = ani.Nodes.Add(dr["codigo"].ToString());
                                            cod.ImageIndex = 1;
                                            codigo = dr["codigo"].ToString();
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else if (rdCodigo.Checked)
                    {
                        int anio = 0;
                        string cliente = "";
                        TreeNode ani = null;
                        TreeNode cli = null;
                        TreeNode cod = null;
                        DataTable pre = createPreCli.getAllPresupuestoCliente();

                        if (null != pre)
                        {
                            string codigo = txtFiltro.Text;

                            foreach (DataRow dr in pre.Rows)
                            {
                                if (codigo.Equals(dr["codigo"].ToString()))
                                {
                                    if (!cliente.Equals(dr["Nombre"].ToString()))
                                    {
                                        cli = filtro.Nodes.Add(dr["Nombre"].ToString());
                                        cli.ImageIndex = 0;
                                        anio = Convert.ToDateTime(dr["fecha"].ToString()).Date.Year;
                                        ani = cli.Nodes.Add(anio.ToString());
                                        ani.ImageIndex = 0;
                                        cliente = dr["Nombre"].ToString();

                                        int anioPre = Convert.ToDateTime(dr["fecha"].ToString()).Date.Year;
                                        
                                        if (anio == anioPre)
                                        {
                                            cod = ani.Nodes.Add(dr["codigo"].ToString());
                                            cod.ImageIndex = 1;
                                            anio = anioPre;
                                        }
                                        else
                                        {
                                            ani = cli.Nodes.Add(anioPre.ToString());
                                            ani.ImageIndex = 0;
                                            cod = ani.Nodes.Add(dr["codigo"].ToString());
                                            cod.ImageIndex = 1;
                                            anio = anioPre;
                                        }
                                    }
                                    else
                                    {
                                        int anioPre = Convert.ToDateTime(dr["fecha"].ToString()).Date.Year;
                                        
                                        if (anio != anioPre)
                                        {
                                            ani = cli.Nodes.Add(anioPre.ToString());
                                            ani.ImageIndex = 0;
                                            cod = ani.Nodes.Add(dr["codigo"].ToString());
                                            cod.ImageIndex = 1;
                                            anio = anioPre;
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else if (rdTipo.Checked)
                    {
                        int anio = 0;
                        string codigo = "";
                        string cliente = "";
                        TreeNode ani = null;
                        TreeNode cli = null;
                        TreeNode cod = null;
                        DataTable pre = createPreCli.getAllPresupuestoCliente();

                        if (null != pre)
                        {
                            string tipo = txtFiltro.Text;

                            foreach (DataRow dr in pre.Rows)
                            {
                                if (tipo.Equals(dr["tipo_presupuesto"].ToString()))
                                {
                                    int anioPre = Convert.ToDateTime(dr["fecha"].ToString()).Date.Year;
                                    
                                    if (anio != anioPre)
                                    {
                                        ani = filtro.Nodes.Add(anioPre.ToString());
                                        ani.ImageIndex = 0;
                                        cliente = dr["Nombre"].ToString();
                                        cli = ani.Nodes.Add(dr["Nombre"].ToString());
                                        cli.ImageIndex = 0;
                                        anio = anioPre;
                                    }
                                    else
                                    {
                                        if (!cliente.Equals(dr["Nombre"].ToString()))
                                        {
                                            cliente = dr["Nombre"].ToString();
                                            cli = ani.Nodes.Add(dr["Nombre"].ToString());
                                            cli.ImageIndex = 0;
                                            codigo = dr["codigo"].ToString();
                                            cod = cli.Nodes.Add(dr["codigo"].ToString());
                                            cod.ImageIndex = 1;
                                        }
                                        else
                                        {
                                            cod = cli.Nodes.Add(dr["codigo"].ToString());
                                            cod.ImageIndex = 1;    
                                            codigo = dr["codigo"].ToString();
                                         }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            catch (Exception ex)
            {
                Texto.escribirLog(ex.Message);
                return;
            }
            
        }

        private void copiaDeSeguridadToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Herramientas.Backup();
        }

        private void recuperarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Herramientas.Restore();
        }

        private void trvPresupuestos_DoubleClick(object sender, EventArgs e)
        {
            try
            {
                string archivo = trvPresupuestos.SelectedNode.Text;
                presupuestosClientesDTO pc = createPreCli.getPresupuestoCliente(archivo);

                if (null != pc)
                {
                    string ruta = @"C:\Presupuestos\" + pc.Fecha.Year + @"\" + pc.NombreCliente + @"\" + archivo + ".pdf";
                    Herramientas.abrirArchivo(ruta);
                }
            }
            catch (Exception ex)
            {
                Texto.escribirLog(ex.Message);
                return;
             
            }
            
        }

    }
}
